﻿using System;
using System.Collections.Generic;

using SharedGenomics.Annotations;
using SharedGenomics.Workbench.Core;
using SharedGenomics.Workbench.Aspects;

namespace SharedGenomics.Workbench.Services
{
    public interface IAnnotationSessionService
    {
        [LoginRequired]
        Maybe<Guid[]> GetAnnotationSessionsForUserAndJob(int userId, int jobId);

        [LoginRequired]
        Maybe<AnnotationSessionWithDescriptionInfo[]> GetAnnotationSessions();

        [LoginRequired]
        Maybe<ViewedAnnotationInfo[]> GetViewedAnnotationsForSession(Guid annotationSessionId);

        [LoginRequired]
        Maybe<ViewedAnnotationWithImageInfo[]> GetViewedAnnotationsWithImagesForSession(Guid annotationSessionId);

        [LoginRequired]
        void SetViewedAnnotationImportance(Guid viewedAnnotationId, bool isImportant);

        [LoginRequired]
        void UploadPng(Guid viewedAnnotationId, byte[] data);

        [LoginRequired]
        void AddViewedAnnotation(Guid id, Guid annotationSessionId, Guid? parentViewedAnnotationId, DateTime createdDate, bool isImportant, string encodedKey, string description);

        [LoginRequired]
        void AddAnnotationSession(Guid id, int jobId);
    }
}
